package com.zhonglz.service.impl;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.zhonglz.commons.base.BaseService;
import com.zhonglz.model.SysBaseSet;
import com.zhonglz.service.SysBaseSetService;
import com.zhonglz.util.Constans;
import com.zhonglz.util.result.ResultUtils;
import com.zhonglz.util.tools.ObjectUtils;
import com.zhonglz.util.tools.UuidUtils;


/***
 * 系统配置接口实现类
 * @author zhonglz
 * @date 2019年12月25日
 */
@Service
@Transactional 
public class SysBaseSetServiceImpl extends BaseService implements SysBaseSetService{

	/***
	 * 查询出数据列表
	 */
	@Override
	public List<SysBaseSet> selectListByData(Map<String, Object> mapParam) {
		return sysBaseSetMapper.selectByDataList(mapParam);
	}

	/***
	 *  根据id查询出配置的详细信息
	 */
	@Override
	public SysBaseSet selectBaseSetById(Integer sysSetId) {
		return sysBaseSetMapper.selectByPrimaryKey(sysSetId);
	}

	/***
	 * 保存配置信息
	 */
	@Override
	public ResultUtils saveBaseSetInfo(SysBaseSet sysBaseSet) {
		if(ObjectUtils.isEmpty(sysBaseSet)) {
			return new ResultUtils(ResultUtils.CODE_ERROR, "没有数据需要保存！");
			
		}
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("setName", sysBaseSet.getSetName());
		// 根据配置名名查询配置是否已经存在
		SysBaseSet findSysBaseSet = sysBaseSetMapper.selectByDataInfo(map);
		if(ObjectUtils.isNotEmpty(sysBaseSet.getSysSetId())) {
			//修改
			if (ObjectUtils.isNotEmpty(findSysBaseSet)&&findSysBaseSet.getSysSetId() != sysBaseSet.getSysSetId()) {
				return new ResultUtils(ResultUtils.CODE_ERROR, "配置已存在！");
			}
			int count = sysBaseSetMapper.updateByPrimaryKeySelective(sysBaseSet);
			if(count>0) {
				return new ResultUtils(ResultUtils.CODE_SUCCESS, "修改信息成功");
			}else {
				return new ResultUtils(ResultUtils.CODE_ERROR, "修改信息失败");
			}
		}else {
			//新增
			if (ObjectUtils.isNotEmpty(findSysBaseSet)) {
				return new ResultUtils(ResultUtils.CODE_ERROR, "配置已存在！");
			}
			String uuid=UuidUtils.uuid();
			sysBaseSet.setSysSetId(uuid);
			sysBaseSet.setCreateTime(new Date());
			int count= sysBaseSetMapper.insertSelective(sysBaseSet);
			if(count>0) {
				return new ResultUtils(ResultUtils.CODE_SUCCESS, "新增信息成功");
			}else {
				return new ResultUtils(ResultUtils.CODE_ERROR, "新增信息失败");
			}
		}
	}

	
	/***
	 * 删除配置信息
	 */
	@Override
	public ResultUtils deleteBaseSetInfo(Integer sysSetId) {
		ResultUtils result=new ResultUtils();
		int count= sysBaseSetMapper.deleteByPrimaryKey(sysSetId);
		if(count>0) {
			result.setCode(ResultUtils.CODE_SUCCESS);
			result.setMsg("删除配置信息成功");
		}else {
			result.setCode(ResultUtils.CODE_ERROR);
			result.setMsg("删除配置信息失败");
		}
		return result;
	}

	/***
	 * 根据配置名查询出配置值信息
	 */
	@Override
	public String baseSetValue(String setName) {
		Map<String, Object> map=new HashMap<String, Object>();
		map.clear();
		map.put("setName", setName);
		map.put("isUse", Constans.SYS_BASE_SET_IS_USE_TRUE);
		SysBaseSet str = sysBaseSetMapper.selectByDataInfo(map);
		if(ObjectUtils.isEmpty(str)) {
			return "";
		}
		return str.getSetValue();
	}

}
